package org.beetl.sql.ext.jpa.mapper.builder;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

import org.beetl.sql.annotation.builder.Builder;
import org.beetl.sql.clazz.kit.BeanKit;
import org.beetl.sql.clazz.kit.Plugin;
import org.beetl.sql.clazz.kit.PropertiesKit;
import org.beetl.sql.mapper.MapperInvoke;
import org.beetl.sql.mapper.builder.MapperExtBuilder;
import org.beetl.sql.mapper.builder.MapperMethodParser;

@Plugin
public class JPADataMapperMethodParser extends MapperMethodParser{
	
	@Override
	protected MapperInvoke others() {
		JpaDataBuilder springDataBuilder = new JpaDataBuilder();
		MapperInvoke mapperInvoke = springDataBuilder.parse(this.mapperClass,this.method);
		if(mapperInvoke!=null) {
			return mapperInvoke;
		}
		return super.others();
	}
	
//	@Override
//	protected MapperExtBuilder findExtBuilder() {
//		MapperExtBuilder meb = getExtBuilder(method.getAnnotations());
//		if(meb!=null) {
//			return meb;
//		}
//		return getExtBuilder(mapperClass.getAnnotations());
//	}
	
//	private MapperExtBuilder getExtBuilder(Annotation[] ans) {
//		for (Annotation an : ans) {
//			Builder builder = an.annotationType().getAnnotation(Builder.class);
//			if (builder == null) {
//				continue;
//			}
//			Class c = builder.value();
//			Object o = BeanKit.newSingleInstance(c);
//			if (!(o instanceof MapperExtBuilder)) {
//				throw new IllegalStateException("期望 " + MapperExtBuilder.class + " 但是 " + c);
//			}
//			return (MapperExtBuilder) o;
//		}
//		return null;
//	}
	

}
